package com.zb.zeus.system.api.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zb.zeus.common.core.annotation.Excel;
import com.zb.zeus.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.ArrayList;
import java.util.List;

/**
 * 组织对象 t_sys_org
 * 
 * @author xiapanhui
 * @date 2021-07-12
 */
@Data
@TableName(value = "t_sys_org")
@ApiModel(value = "SysOrg组织模型", description = "SysOrg组织数据表模型")
public class SysOrg extends BaseEntity
{

    /** 组织id */
    @Excel(name = "组织编码（ihr组织编码或新增）")
    @TableField(value = "org_id")
    @ApiModelProperty(value = "组织编码（ihr组织编码或新增）")
    private Long orgId;

    /** 从根到当前节点的，组织编码。例：1,3,8001000 */
    @Excel(name = "从根到当前节点的，组织编码。例：1,3,8001000")
    @TableField(value = "full_path")
    @ApiModelProperty(value = "从根到当前节点的，组织编码。例：1,3,8001000")
    private String fullPath;

    /** 组织层级 */
    @Excel(name = "组织层级")
    @TableField(value = "org_level")
    @ApiModelProperty(value = "组织层级")
    private Long orgLevel;

    /** 组织层级名称 */
    @Excel(name = "组织层级名称")
    @TableField(value = "org_level_name")
    @ApiModelProperty(value = "组织层级名称")
    private String orgLevelName;

    /** 组织名称 */
    @Excel(name = "组织名称")
    @TableField(value = "org_name")
    @ApiModelProperty(value = "组织名称")
    private String orgName;

    /** 组织简称 */
    @Excel(name = "组织简称")
    @TableField(value = "org_short_name")
    @ApiModelProperty(value = "组织简称")
    private String orgShortName;

    /** 上级组织id */
    @Excel(name = "上级组织id")
    @TableField(value = "parent_id")
    @ApiModelProperty(value = "上级组织id")
    private Long parentId;

    /** 组织类别 */
    @Excel(name = "组织类别")
    @TableField(value = "org_type")
    @ApiModelProperty(value = "组织类别")
    private Long orgType;

    /** 组织类别名称 */
    @Excel(name = "组织类别名称")
    @TableField(value = "org_type_name")
    @ApiModelProperty(value = "组织类别名称")
    private String orgTypeName;

    /** 所属单位 */
    @Excel(name = "所属单位")
    @TableField(value = "unit_id")
    @ApiModelProperty(value = "所属单位")
    private Long unitId;

    /** 所属单位名称 */
    @Excel(name = "所属单位名称")
    @TableField(value = "unit_name")
    @ApiModelProperty(value = "所属单位名称")
    private String unitName;

    /** 模块id */
    @Excel(name = "模块id")
    @TableField(value = "plate")
    @ApiModelProperty(value = "模块id")
    private String plate;

    /** 模块名称 */
    @Excel(name = "模块名称")
    @TableField(value = "plate_name")
    @ApiModelProperty(value = "模块名称")
    private String plateName;

    /** 负责人 */
    @Excel(name = "负责人")
    @TableField(value = "principal_emp_num")
    @ApiModelProperty(value = "负责人")
    private Long principalEmpNum;

    /** 负责人名称 */
    @Excel(name = "负责人名称")
    @TableField(value = "principal_emp_name")
    @ApiModelProperty(value = "负责人名称")
    private String principalEmpName;

    /** 组织状态（0有效 1无效） */
    @Excel(name = "组织状态", readConverterExp = "0=有效,1=无效")
    @TableField(value = "status")
    @ApiModelProperty(value = "组织状态")
    private String status;

    /** 显示顺序 */
    @Excel(name = "显示顺序")
    @TableField(value = "order_num")
    @ApiModelProperty(value = "显示顺序")
    private Integer orderNum;

    /**
     * 消息id
     */
    @TableField("msg_id")
    private Long msgId;

    /** 父组织名称 */
    @TableField(exist = false)
    private String parentName;

    /** 子组织 */
    @TableField(exist = false)
    private List<SysOrg> children = new ArrayList<SysOrg>();

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("orgId", getOrgId())
            .append("fullPath", getFullPath())
            .append("orgLevel", getOrgLevel())
            .append("orgLevelName", getOrgLevelName())
            .append("orgName", getOrgName())
            .append("orgShortName", getOrgShortName())
            .append("parentId", getParentId())
            .append("orgType", getOrgType())
            .append("orgTypeName", getOrgTypeName())
            .append("unitId", getUnitId())
            .append("unitName", getUnitName())
            .append("plate", getPlate())
            .append("plateName", getPlateName())
            .append("principalEmpNum", getPrincipalEmpNum())
            .append("principalEmpName", getPrincipalEmpName())
            .append("status", getStatus())
            .append("orderNum", getOrderNum())
            .append("createBy", getCreateBy())
            .append("createName", getCreateName())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateName", getUpdateName())
            .append("updateTime", getUpdateTime())
            .append("version", getVersion())
            .append("dr", getDr())
            .toString();
    }
}
